//
// Created by hugan on 2020/11/20.
//

#ifndef HUP_UTILS_PARENT_CPP_SHELLEXECUTEUTIL_H
#define HUP_UTILS_PARENT_CPP_SHELLEXECUTEUTIL_H

#include <Windows.h>
#include <shellapi.h>

/**
 * ShellExecute 功能类
 * https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutea
 */
class ShellExecuteUtil {
public:
    /**
     * ShellExecute的[open]指令,用于[运行程序,用默认浏览器打开网页,打开文件];
     * 目的是代替[java.awt.Desktop#open]无法设置[运行目录]的问题;
     * @param filePath 要打开/执行的文件路径
     * @param runDirectory 运行目录;nullable-在当前目录运行指令
     * @note 原则上[运行程序]时,都应该传入[程序的父目录],无奈cpp在获取父目录时十分无语,所以runDirectory都在java层处理;
     * 打开网页时,如果是新启动的浏览器,则界面缩放比例会错误(不是运行路径问题),暂无解决方法;
     * 获取当前默认浏览器路径 https://blog.csdn.net/ityezi_admin/article/details/26565425
     */
    static int open(LPCSTR filePath, LPCSTR runDirectory, LPCSTR param);

    static void printOpenRes(int res);
};

#endif //HUP_UTILS_PARENT_CPP_SHELLEXECUTEUTIL_H
